FrameLib  0.7
DSP processing with frames of arbitrary timing and length
FrameLib_Parameters.h
Go to the documentation of this file.
1 
2 #ifndef FRAMELIB_PARAMETERS_H
3 #define FRAMELIB_PARAMETERS_H
4 
5 #include "FrameLib_Types.h"
6 #include "FrameLib_Memory.h"
7 #include <vector>
8 #include <cstring>
9 #include <cassert>
10 #include <limits>
11 #include <string>
12 
13 // FrameLib_Parameters
14 
15 // This class deals with parameters of an object
16 
17 static const char *typeStringsDouble[] = {"double", "enum", "string", "fixed length double array", "variable length double array" };
18 static const char *typeStringsInteger[] = {"int", "enum", "string", "fixed length int array", "variable length int array" };
19 static const char *typeStringsBool[] = {"bool", "enum", "string", "fixed length bool array", "variable length bool array" };
20 
22 {
23 
24 public:
25 
29 
30 public:
31 
32  // A Serialised Set Of Tagged Parameter Values (no memory ownership)
33 
34  class Serial
35  {
36 
37  public:
38 
39  // N.B. the assumption is that double is the largest type in use
40 
41  static const size_t alignment = sizeof(double);
42  static const size_t minGrowSize = 512;
43 
44  private:
45 
46  enum DataType { kDoubleArray, kString };
47 
48  public:
49 
50  // Constructors and Destructor
51 
52  Serial(BytePointer ptr, size_t size);
53  Serial();
54 
55  // Size Calculations
56 
57  static size_t calcSize(Serial *serialised) { return serialised != NULL ? serialised->mSize : 0; }
58  static size_t calcSize(const char *tag, const char *str) { return sizeType() + sizeString(tag) + sizeString(str); }
59  static size_t calcSize(const char *tag, size_t N) { return sizeType() + sizeString(tag) + sizeArray(N); }
60 
61  // Write Items
62 
63  void write(Serial *serialised);
64  void write(const char *tag, const char *str);
65  void write(const char *tag, const double *values, size_t N);
66 
67  // Read into Parameters
68 
69  void read(FrameLib_Parameters *parameters) const;
70 
71  // Utility
72 
73  size_t size() const { return mSize; }
74  void clear() { mSize = 0; }
75 
76  static size_t alignSize(size_t size) { return (size + (alignment - 1)) & ~(alignment - 1); }
77  static size_t inPlaceSize(size_t size) { return alignSize(sizeof(Serial)) + alignSize(size); }
78 
79  static Serial *newInPlace(void *ptr, size_t size) { return new (ptr) Serial(((BytePointer) ptr) + alignSize(sizeof(Serial)), size); }
80 
81  protected:
82 
83  // Check Size
84 
85  bool checkSize(size_t writeSize);
86 
87  private:
88 
89  // Deleted
90 
91  Serial(const Serial&);
92  Serial& operator=(const Serial&);
93 
94  // Debug
95 
96  void alignmentChecks() const;
97 
98  // Size Calculators
99 
100  static size_t sizeType() { return alignSize(sizeof(DataType)); }
101  static size_t sizeString(const char *str) { return alignSize(sizeof(size_t)) + alignSize(strlen(str) + 1); }
102  static size_t sizeArray(size_t N) { return alignSize(sizeof(size_t)) + alignSize((N * sizeof(double))); }
103 
104  // Write Item
105 
106  void writeType(DataType type);
107  void writeSize(size_t size);
108  void writeString(const char *str);
109  void writeDoubles(const double *ptr, size_t N);
110 
111  // Read Item
112 
113  DataType readType(BytePointer *readPtr) const;
114  void readSize(BytePointer *readPtr, size_t *size) const;
115  void readDoubles(BytePointer *readPtr, double **values, size_t *N) const;
116  void readString(BytePointer *readPtr, char **str) const;
117 
118  protected:
119 
120  // Member Variables
121 
123  size_t mSize;
124  size_t mMaxSize;
125  };
126 
127  // Extends Serial (with memory ownership)
128 
129  class AutoSerial : public Serial
130  {
131 
132  public:
133 
135  AutoSerial(size_t size) : Serial(new Byte[size], size) {}
136  ~AutoSerial() { if (mPtr) delete[] mPtr; }
137 
138  // Write Items
139 
140  void write(Serial *serialised) { if (checkSize(calcSize(serialised))) Serial::write(serialised); }
141  void write(const char *tag, char *str) { if (checkSize(calcSize(tag, str))) Serial::write(tag, str); }
142  void write(const char *tag, double *values, size_t N) { if (checkSize(calcSize(tag, N))) Serial::write(tag, values, N); }
143 
144  private:
145 
146  bool checkSize(size_t writeSize);
147  };
148 
149  // ************************************************************************************** //
150 
151  // Info Class for Passing in Info Strings
152 
153  class Info
154  {
155 
156  public:
157 
158  void add(const char *str) { mInfoStrings.push_back(str); }
159  void add(const std::string &str) { mInfoStrings.push_back(str); }
160  const char *get(unsigned long idx) { return (idx < mInfoStrings.size()) ? mInfoStrings[idx].c_str() : "No parameter info available"; }
161 
162  private:
163 
164  std::vector<std::string> mInfoStrings;
165  };
166 
167  // ************************************************************************************** //
168 
169 private:
170 
171  // Abstract Parameter Class
172 
173  class Parameter
174  {
175 
176  public:
177 
178  enum Flags { kFlagInstantiation = 0x1, kFlagBool = 0x2, kFlagInteger = 0x4, kFlagNonNumeric = 0x8 };
179 
180  // Constructor / Destructor
181 
182  Parameter(const char *name, long argumentIdx);
183  virtual ~Parameter() {};
184 
185  // Setters
186 
187  virtual void addEnumItem(const char *str);
188 
189  void setInstantiation() { mFlags |= kFlagInstantiation; }
190  void setBoolOnly() { mFlags |= kFlagBool | kFlagInteger; }
191  void setIntegerOnly() { mFlags |= kFlagInteger; }
192  void setNonNumeric() { mFlags |= kFlagNonNumeric; }
193 
194  void setMin(double min);
195  void setMax(double max);
196  void setClip(double min, double max);
197 
198  virtual void set(const char *str) {}
199  virtual void set(double value) {}
200  virtual void set(double *values, size_t N);
201 
202  virtual void clear() = 0;
203 
204  // Getters
205 
206  // Setup
207 
208  virtual Type type() = 0;
209 
210  const char *name() const { return mName.c_str(); }
211  long argumentIdx() const { return mArgumentIdx; }
212  int flags() const { return mFlags; }
213 
214  ClipMode getClipMode() const;
215  double getMin() const { return mMin; }
216  double getMax() { return mMax; }
217  void getRange(double *min, double *max) const;
218 
219  virtual const char *getItemString(unsigned long item) const;
220 
221  // Values
222 
223  double getDefault() const { return mDefault; }
224 
225  virtual double getValue() const { return 0; }
226  virtual const char *getString() const { return NULL; }
227  virtual size_t getArraySize() const { return 0; }
228  virtual size_t getArrayMaxSize() const { return 0; }
229  virtual const double *getArray() const { return NULL; }
230  const double *getArray(size_t *size) const;
231 
232  bool changed();
233 
234  protected:
235 
236  bool mChanged;
237  int mFlags;
238 
239  double mDefault;
240  double mMin;
241  double mMax;
242 
243  private:
244 
245  std::string mName;
246  long mArgumentIdx;
247  };
248 
249  // ************************************************************************************** //
250 
251  // Enum Parameter Class
252 
253  class Enum : public Parameter
254  {
255 
256  public:
257 
258  Enum(const char *name, long argumentIdx);
259 
260  // Setters
261 
262  void addEnumItem(const char *str);
263 
264  virtual void set(double value);
265  virtual void set(double *values, size_t N);
266  virtual void set(const char *str);
267 
268  virtual void clear() { Enum::set(0.0); };
269 
270  virtual Type type() { return kEnum; }
271 
272  // Getters
273 
274  virtual double getValue() const { return mValue; }
275  virtual const char *getString() const { return mItems[mValue].c_str(); }
276  virtual const char *getItemString(unsigned long item) const { return mItems[item].c_str(); }
277 
278  private:
279 
280  std::vector <std::string> mItems;
281  unsigned long mValue;
282  };
283 
284  // ************************************************************************************** //
285 
286  // Value Parameter Class
287 
288  class Value : public Parameter
289  {
290 
291  public:
292 
293  Value(const char *name, long argumentIdx, double defaultValue) : Parameter(name, argumentIdx), mValue(defaultValue)
294  { mDefault = defaultValue; }
295 
296  // Setters
297 
298  virtual void set(double value);
299  virtual void set(double *values, size_t N);
300 
301  virtual void clear() { Value::set(mDefault); };
302 
303  // Getters
304 
305  virtual Type type() { return kValue; }
306 
307  virtual double getValue() const { return mValue; }
308 
309  private:
310 
311  double mValue;
312  };
313 
314  // ************************************************************************************** //
315 
316  // String Parameter Class
317 
318  class String : public Parameter
319  {
320  const static size_t maxLen = 128;
321 
322  public:
323 
324  String(const char *name, long argumentIdx);
325 
326  // Setters
327 
328  virtual void set(const char *str);
329 
330  virtual void clear() { String::set(NULL); };
331 
332  // Getters
333 
334  virtual Type type() { return kString; }
335 
336  virtual const char *getString() const { return mCString; }
337 
338  private:
339 
340  char mCString[maxLen + 1];
341  };
342 
343  // ************************************************************************************** //
344 
345  // Array Parameter Class
346 
347  class Array : public Parameter, private std::vector<double>
348  {
349 
350  public:
351 
352  Array(const char *name, long argumentIdx, double defaultValue, size_t size);
353  Array(const char *name, long argumentIdx, double defaultValue, size_t maxSize, size_t size);
354 
355  // Setters
356 
357  virtual void set(double *values, size_t N);
358 
359  virtual void clear() { Array::set(NULL, 0); };
360 
361  // Getters
362 
363  virtual Type type() { return mVariableSize ? kVariableArray : kArray; }
364 
365  virtual size_t getArraySize() const { return mSize; }
366  virtual size_t getArrayMaxSize() const { return mItems.size(); }
367  virtual const double * getArray() const { return &mItems[0]; }
368 
369  private:
370 
371  std::vector<double> mItems;
372  size_t mSize;
373 
374  const bool mVariableSize;
375  };
376 
377  // ************************************************************************************** //
378 
379 public:
380 
381  // Constructor
382 
383  FrameLib_Parameters(Info *info) : mParameterInfo(info) {}
384 
385  // Destructor
386 
388  {
389  for (std::vector <Parameter *>::iterator it = mParameters.begin(); it != mParameters.end(); it++)
390  delete *it;
391  }
392 
393  // Size and Index
394 
395  unsigned long size() const { return mParameters.size(); }
396 
397  long getIdx(const char *name) const
398  {
399  for (unsigned long i = 0; i < mParameters.size(); i++)
400  if (strcmp(name, mParameters[i]->name()) == 0)
401  return i;
402 
403  long argumentIdx = convertToNumber(name);
404 
405  if (argumentIdx >= 0)
406  for (unsigned long i = 0; i < mParameters.size(); i++)
407  if (argumentIdx == mParameters[i]->argumentIdx())
408  return i;
409 
410  return -1;
411  }
412 
413  long maxArgument() const
414  {
415  long argument = -1;
416 
417  for (unsigned long i = 0; i < mParameters.size(); i++)
418  argument = std::max(mParameters[i]->argumentIdx(), argument);
419 
420  return argument;
421  }
422 
423  // Add Parameters
424 
425  void addBool(unsigned long index, const char *name, bool defaultValue = false, long argumentIdx = -1)
426  {
427  addParameter(index, new Value(name, argumentIdx, defaultValue));
428  mParameters.back()->setClip(false, true);
429  mParameters.back()->setBoolOnly();
430  }
431 
432  void addDouble(unsigned long index, const char *name, double defaultValue = 0.0, long argumentIdx = -1)
433  {
434  addParameter(index, new Value(name, argumentIdx, defaultValue));
435  }
436 
437  void addInt(unsigned long index, const char *name, long defaultValue = 0, long argumentIdx = -1)
438  {
439  addParameter(index, new Value(name, argumentIdx, defaultValue));
440  mParameters.back()->setIntegerOnly();
441  }
442 
443  void addString(unsigned long index, const char *name, long argumentIdx = -1)
444  {
445  addParameter(index, new String(name, argumentIdx));
446  }
447 
448  void addEnum(unsigned long index, const char *name, long argumentIdx = -1)
449  {
450  addParameter(index, new Enum(name, argumentIdx));
451  }
452 
453  void addEnumItem(unsigned long index, const char *str)
454  {
455  mParameters.back()->addEnumItem(str);
456  }
457 
458  void addBoolArray(unsigned long index, const char *name, long defaultValue, size_t size, long argumentIdx = -1)
459  {
460  addParameter(index, new Array(name, argumentIdx, defaultValue, size));
461  mParameters.back()->setBoolOnly();
462  }
463 
464  void addIntArray(unsigned long index, const char *name, long defaultValue, size_t size, long argumentIdx = -1)
465  {
466  addParameter(index, new Array(name, argumentIdx, defaultValue, size));
467  mParameters.back()->setIntegerOnly();
468  }
469 
470  void addDoubleArray(unsigned long index, const char *name, double defaultValue, size_t size, long argumentIdx = -1)
471  {
472  addParameter(index, new Array(name, argumentIdx, defaultValue, size));
473  }
474 
475  void addVariableBoolArray(unsigned long index, const char *name, long defaultValue, size_t maxSize, size_t size, long argumentIdx = -1)
476  {
477  addParameter(index, new Array(name, argumentIdx, defaultValue, maxSize, size));
478  mParameters.back()->setBoolOnly();
479  }
480 
481  void addVariableIntArray(unsigned long index, const char *name, long defaultValue, size_t maxSize, size_t size, long argumentIdx = -1)
482  {
483  addParameter(index, new Array(name, argumentIdx, defaultValue, maxSize, size));
484  mParameters.back()->setIntegerOnly();
485  }
486 
487  void addVariableDoubleArray(unsigned long index, const char *name, double defaultValue, size_t maxSize, size_t size, long argumentIdx = -1)
488  {
489  addParameter(index, new Array(name, argumentIdx, defaultValue, maxSize, size));
490  }
491 
492  // Setters (N.B. - setters have sanity checks as the tags are set by the end-user)
493 
494  // Set as Instantiation Only
495 
496  void setInstantiation() { mParameters.back()->setInstantiation(); }
497 
498  // Set Range
499 
500  void setMin(double min) { mParameters.back()->setMin(min); }
501  void setMax(double max) { mParameters.back()->setMax(max); }
502  void setClip(double min, double max) { mParameters.back()->setClip(min, max); }
503 
504  // Set Value
505 
506  void set(Serial *serialised) { if (serialised) serialised->read(this); }
507 
508  void set(unsigned long idx, bool value) { set(idx, (double) value); }
509  void set(const char *name, bool value) { set(name, (double) value); }
510 
511  void set(unsigned long idx, long value) { set(idx, (double) value); }
512  void set(const char *name, long value) { set(name, (double) value); }
513 
514  void set(unsigned long idx, double value) { if (idx < size()) mParameters[idx]->set(value); }
515  void set(const char *name, double value) { set(getIdx(name), value); }
516 
517  void set(unsigned long idx, char *str) { if (idx < size()) mParameters[idx]->set(str); }
518  void set(const char *name, char *str) { set(getIdx(name), str); }
519 
520  void set(unsigned long idx, double *values, size_t N) { if (idx < size()) mParameters[idx]->set(values, N); }
521  void set(const char *name, double *values, size_t N) { set(getIdx(name), values, N); }
522 
523  void clear(unsigned long idx) { if (idx < size()) mParameters[idx]->clear(); }
524  void clear(const char *name) { clear(getIdx(name)); }
525 
526  // Getters (N.B. - getters have no sanity checks, because they are the programmer's responsibility)
527 
528  // Get Name
529 
530  std::string getName(unsigned long idx) const { return mParameters[idx]->name(); }
531 
532  long getArgumentIdx(unsigned long idx) const { return mParameters[idx]->argumentIdx(); }
533  long getArgumentIdx(const char *name) const { return mParameters[getIdx(name)]->argumentIdx(); }
534 
535  // Get Type
536 
537  Type getType(unsigned long idx) const { return mParameters[idx]->type(); }
538  Type getType(const char *name) const { return getType(getIdx(name)); }
539 
540  NumericType getNumericType(unsigned long idx) const;
541  NumericType getNumericType(const char *name) const { return getNumericType(getIdx(name)); }
542 
543  // N.B. the type string includes details of numeric type / instantion only
544 
545  std::string getTypeString(unsigned long idx) const;
546  std::string getTypeString(const char *name) const { return getTypeString(getIdx(name)); }
547 
548  // Get Range
549 
550  ClipMode getClipMode(unsigned long idx) const { return mParameters[idx]->getClipMode(); }
551  ClipMode getClipMode(const char *name) const { return getClipMode(getIdx(name)); }
552 
553  double getMin(unsigned long idx) const { return mParameters[idx]->getMin(); }
554  double getMin(const char *name) const { return getMin(getIdx(name)); }
555 
556  double getMax(unsigned long idx) const { return mParameters[idx]->getMax(); }
557  double getMax(const char *name) const { return getMax(getIdx(name)); }
558 
559  void getRange(unsigned long idx, double *min, double *max) const { return mParameters[idx]->getRange(min, max); }
560  void getRange(const char *name, double *min, double *max) const { return getRange(getIdx(name), min, max); }
561 
562  // Get Item Strings
563 
564  std::string getItemString(unsigned long idx, unsigned long item) const { return mParameters[idx]->getItemString(item); }
565  std::string getItemString(const char *name, unsigned long item) const { return getItemString(getIdx(name), item); }
566 
567  // Get Info
568 
569  std::string getInfo(unsigned long idx) const { return mParameterInfo ? mParameterInfo->get(idx) : "No parameter info available"; }
570  std::string getInfo(const char *name) const { return getInfo(getIdx(name)); }
571 
572  // Default Values
573 
574  double getDefault(unsigned long idx) const { return mParameters[idx]->getDefault(); }
575  double getDefault(const char *name) const { return getDefault(getIdx(name)); }
576 
577  std::string getDefaultString(unsigned long idx) const;
578  std::string getDefaultString(const char *name) const { return getDefaultString(getIdx(name)); }
579 
580  // Get Value
581 
582  double getValue(unsigned long idx) const { return mParameters[idx]->getValue(); }
583  double getValue(const char *name) const { return getValue(getIdx(name)); }
584 
585  long getInt(unsigned long idx) const { return (long) getValue(idx); }
586  long getInt(const char *name) const { return getInt(getIdx(name)); }
587 
588  long getBool(unsigned long idx) const { return (bool) getValue(idx); }
589  bool getBool(const char *name) const { return (bool) getValue(getIdx(name)); }
590 
591  const char *getString(unsigned long idx) const { return mParameters[idx]->getString(); }
592  const char *getString(const char *name) const { return getString(getIdx(name)); }
593 
594  const double *getArray(unsigned long idx) const { return mParameters[idx]->getArray(); }
595  const double *getArray(const char *name) const { return getArray(getIdx(name)); }
596  const double *getArray(unsigned long idx, size_t *size) const { return mParameters[idx]->getArray(size); }
597  const double *getArray(const char *name, size_t *size) const { return getArray(getIdx(name), size); }
598 
599  size_t getArraySize(unsigned long idx) const { return mParameters[idx]->getArraySize(); }
600  size_t getArraySize(const char *name) const { return getArraySize(getIdx(name)); }
601 
602  size_t getArrayMaxSize(unsigned long idx) const { return mParameters[idx]->getArrayMaxSize(); }
603  size_t getArrayMaxSize(const char *name) const { return getArrayMaxSize(getIdx(name)); }
604 
605  bool changed(unsigned long idx) { return mParameters[idx]->changed(); }
606  bool changed(const char *name) { return changed(getIdx(name)); }
607 
608 private:
609 
610  // Deleted
611 
613  FrameLib_Parameters& operator=(const FrameLib_Parameters&);
614 
615  // Utility
616 
617  void addParameter(unsigned long index, Parameter *attr)
618  {
619  assert((index == mParameters.size()) && "parameters must be added in order");
620  mParameters.push_back(attr);
621  }
622 
623  static long convertToNumber(const char *name)
624  {
625  long result = 0;
626 
627  for (unsigned long i = 0; ; i++)
628  {
629  long current = name[i];
630 
631  if (current == 0 && i)
632  return result;
633 
634  if (current < '0' || current > '9')
635  return -1;
636 
637  result = (result * 10) + (current - '0');
638  }
639  }
640 
641  // Data
642 
643  std::vector <Parameter *> mParameters;
644  Info *mParameterInfo;
645 };
646 
647 #endif
AutoSerial(size_t size)
Definition: FrameLib_Parameters.h:135
size_t getArraySize(unsigned long idx) const
Definition: FrameLib_Parameters.h:599
void addEnumItem(unsigned long index, const char *str)
Definition: FrameLib_Parameters.h:453
~AutoSerial()
Definition: FrameLib_Parameters.h:136
void add(const char *str)
Definition: FrameLib_Parameters.h:158
long getBool(unsigned long idx) const
Definition: FrameLib_Parameters.h:588
Definition: FrameLib_Parameters.h:27
void addDouble(unsigned long index, const char *name, double defaultValue=0.0, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:432
double getValue(const char *name) const
Definition: FrameLib_Parameters.h:583
Definition: FrameLib_Parameters.h:21
NumericType getNumericType(const char *name) const
Definition: FrameLib_Parameters.h:541
void add(const std::string &str)
Definition: FrameLib_Parameters.h:159
static size_t inPlaceSize(size_t size)
Definition: FrameLib_Parameters.h:77
static Serial * newInPlace(void *ptr, size_t size)
Definition: FrameLib_Parameters.h:79
Serial()
Definition: FrameLib_Parameters.cpp:11
void setClip(double min, double max)
Definition: FrameLib_Parameters.h:502
void getRange(const char *name, double *min, double *max) const
Definition: FrameLib_Parameters.h:560
std::string getName(unsigned long idx) const
Definition: FrameLib_Parameters.h:530
void getRange(unsigned long idx, double *min, double *max) const
Definition: FrameLib_Parameters.h:559
const double * getArray(unsigned long idx, size_t *size) const
Definition: FrameLib_Parameters.h:596
Definition: FrameLib_Parameters.h:34
double getMin(unsigned long idx) const
Definition: FrameLib_Parameters.h:553
std::string getItemString(const char *name, unsigned long item) const
Definition: FrameLib_Parameters.h:565
void addVariableIntArray(unsigned long index, const char *name, long defaultValue, size_t maxSize, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:481
FrameLib_Parameters(Info *info)
Definition: FrameLib_Parameters.h:383
ClipMode getClipMode(unsigned long idx) const
Definition: FrameLib_Parameters.h:550
Definition: FrameLib_Parameters.h:27
void write(const char *tag, double *values, size_t N)
Definition: FrameLib_Parameters.h:142
void setMax(double max)
Definition: FrameLib_Parameters.h:501
double getDefault(const char *name) const
Definition: FrameLib_Parameters.h:575
double getMin(const char *name) const
Definition: FrameLib_Parameters.h:554
static size_t calcSize(Serial *serialised)
Definition: FrameLib_Parameters.h:57
void addBool(unsigned long index, const char *name, bool defaultValue=false, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:425
void clear(unsigned long idx)
Definition: FrameLib_Parameters.h:523
size_t mSize
Definition: FrameLib_Parameters.h:123
Definition: FrameLib_Parameters.h:27
long maxArgument() const
Definition: FrameLib_Parameters.h:413
Type getType(unsigned long idx) const
Definition: FrameLib_Parameters.h:537
std::string getInfo(unsigned long idx) const
Definition: FrameLib_Parameters.h:569
void addVariableBoolArray(unsigned long index, const char *name, long defaultValue, size_t maxSize, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:475
Definition: FrameLib_Parameters.h:28
unsigned char * BytePointer
Definition: FrameLib_Types.h:16
size_t size() const
Definition: FrameLib_Parameters.h:73
std::string getInfo(const char *name) const
Definition: FrameLib_Parameters.h:570
void addVariableDoubleArray(unsigned long index, const char *name, double defaultValue, size_t maxSize, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:487
size_t mMaxSize
Definition: FrameLib_Parameters.h:124
size_t getArraySize(const char *name) const
Definition: FrameLib_Parameters.h:600
Definition: FrameLib_Parameters.h:28
NumericType
Definition: FrameLib_Parameters.h:26
static const size_t alignment
Definition: FrameLib_Parameters.h:41
void addIntArray(unsigned long index, const char *name, long defaultValue, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:464
~FrameLib_Parameters()
Definition: FrameLib_Parameters.h:387
bool changed(const char *name)
Definition: FrameLib_Parameters.h:606
long getArgumentIdx(unsigned long idx) const
Definition: FrameLib_Parameters.h:532
Definition: FrameLib_Parameters.h:27
Definition: FrameLib_Parameters.h:28
void write(const char *tag, char *str)
Definition: FrameLib_Parameters.h:141
Definition: FrameLib_Parameters.h:27
void write(Serial *serialised)
Definition: FrameLib_Parameters.cpp:18
const char * getString(unsigned long idx) const
Definition: FrameLib_Parameters.h:591
unsigned char Byte
Definition: FrameLib_Types.h:15
double getValue(unsigned long idx) const
Definition: FrameLib_Parameters.h:582
void setMin(double min)
Definition: FrameLib_Parameters.h:500
BytePointer mPtr
Definition: FrameLib_Parameters.h:122
long getInt(unsigned long idx) const
Definition: FrameLib_Parameters.h:585
Definition: FrameLib_Parameters.h:26
NumericType getNumericType(unsigned long idx) const
Definition: FrameLib_Parameters.cpp:436
void clear(const char *name)
Definition: FrameLib_Parameters.h:524
unsigned long size() const
Definition: FrameLib_Parameters.h:395
double getMax(const char *name) const
Definition: FrameLib_Parameters.h:557
Definition: FrameLib_Parameters.h:153
const double * getArray(unsigned long idx) const
Definition: FrameLib_Parameters.h:594
std::string getTypeString(unsigned long idx) const
Definition: FrameLib_Parameters.cpp:447
std::string getItemString(unsigned long idx, unsigned long item) const
Definition: FrameLib_Parameters.h:564
ClipMode
Definition: FrameLib_Parameters.h:28
AutoSerial()
Definition: FrameLib_Parameters.h:134
long getArgumentIdx(const char *name) const
Definition: FrameLib_Parameters.h:533
ClipMode getClipMode(const char *name) const
Definition: FrameLib_Parameters.h:551
size_t getArrayMaxSize(unsigned long idx) const
Definition: FrameLib_Parameters.h:602
void setInstantiation()
Definition: FrameLib_Parameters.h:496
long getIdx(const char *name) const
Definition: FrameLib_Parameters.h:397
Type
Definition: FrameLib_Parameters.h:27
Definition: FrameLib_Parameters.h:26
bool getBool(const char *name) const
Definition: FrameLib_Parameters.h:589
const double * getArray(const char *name, size_t *size) const
Definition: FrameLib_Parameters.h:597
long getInt(const char *name) const
Definition: FrameLib_Parameters.h:586
void read(FrameLib_Parameters *parameters) const
Definition: FrameLib_Parameters.cpp:49
static size_t alignSize(size_t size)
Definition: FrameLib_Parameters.h:76
bool checkSize(size_t writeSize)
Definition: FrameLib_Parameters.cpp:150
double getDefault(unsigned long idx) const
Definition: FrameLib_Parameters.h:574
Type getType(const char *name) const
Definition: FrameLib_Parameters.h:538
const double * getArray(const char *name) const
Definition: FrameLib_Parameters.h:595
static size_t calcSize(const char *tag, const char *str)
Definition: FrameLib_Parameters.h:58
Definition: FrameLib_Parameters.h:129
size_t getArrayMaxSize(const char *name) const
Definition: FrameLib_Parameters.h:603
void write(Serial *serialised)
Definition: FrameLib_Parameters.h:140
std::string getDefaultString(const char *name) const
Definition: FrameLib_Parameters.h:578
void addBoolArray(unsigned long index, const char *name, long defaultValue, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:458
Definition: FrameLib_Parameters.h:28
void addInt(unsigned long index, const char *name, long defaultValue=0, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:437
std::string getTypeString(const char *name) const
Definition: FrameLib_Parameters.h:546
Definition: FrameLib_Parameters.h:26
bool changed(unsigned long idx)
Definition: FrameLib_Parameters.h:605
void addEnum(unsigned long index, const char *name, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:448
static const size_t minGrowSize
Definition: FrameLib_Parameters.h:42
const char * getString(const char *name) const
Definition: FrameLib_Parameters.h:592
void addString(unsigned long index, const char *name, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:443
static size_t calcSize(const char *tag, size_t N)
Definition: FrameLib_Parameters.h:59
std::string getDefaultString(unsigned long idx) const
Definition: FrameLib_Parameters.cpp:466
void clear()
Definition: FrameLib_Parameters.h:74
void addDoubleArray(unsigned long index, const char *name, double defaultValue, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:470
Definition: FrameLib_Parameters.h:26
double getMax(unsigned long idx) const
Definition: FrameLib_Parameters.h:556